"""
字典的常用操作：
    1.新增和更新
    2.pop 取出元素并删除
    3.clear 清空字典
    4.keys() 取出所有的key
    4.for 遍历字典 1.keys 2.直接遍历，不支持while循环遍历
    5.len() 统计字典的元素数量
    6.del 字典[指定元素]:删除指定的k-v对
    7.key in 字典：判断指定key是否在字典中
    8.values:获取所有的字典值
    9.items:获取所有的键值对
    10.获取字典元素的值 ①字典[key](不存在会抛出异常) ②字典.get(key)(不存在不会抛出异常)
"""

# 新增和更新元素
my_dict = {1: "a", 2: "b", 3: "c"}

# 如果key在字典中不存在则是新增
my_dict[4] = "e"
print(f"字典经过新增元素后，结果为:{my_dict}")

# 如果key存在则就是更新
my_dict[4] = "f"
print(f"字典经过更新元素后，结果为：{my_dict}")

# 删除元素 pop
dict_pop = my_dict.pop(1)  # 元素的value值
print(f"删除元素{dict_pop}后，字典的结果为:{my_dict}")

# 清空字典表 clear
my_dict.clear()
print(f"清空字典表后，字典的结果为：{my_dict},类型为:{type(my_dict)}")

# 取出所有的key,可以用于字典的遍历
my_dict = {1: "a", 2: "b", 3: "c"}
keys = my_dict.keys()
print(f"字典{my_dict}中所有的key为：{keys},接收所有key的数据类型为:{type(keys)}")

# 字典遍历
# 方式1 通过获取全部的key来遍历字典
for key in keys:
    print(f"<key:{key},value:{my_dict[key]}>")

# 方式2：直接对字典进行for循环，每次循环都直接得到key
print(f"--------------------------------------")
for key in my_dict:
    print(f"<key:{key},value:{my_dict[key]}>")

# 统计字典的元素数量
num = len(my_dict)
print(f"字典中的元素数量为：{num}个")

print("-----------------------------------")
# 删除字典元素
my_dict = {"a": 1, "b": 2, "c": 3}
del my_dict["a"]
print(my_dict)

# 判断指定key是否在字典中
print("b" in my_dict)
print("a" not in my_dict)

# values获取所有的值
values = my_dict.values()
print(values)
print(type(values))
print(list(values))

# items 获取所有的key-value键值对
items = my_dict.items()
print(items)
print(type(items))
print(list(items))

# ①字典[key](不存在会抛出异常) ②字典.get(key)(不存在不会抛出异常)
# print(my_dict["d"]) # 抛出异常 KeyError: 'd'
print(my_dict.get("d"))  # 返回None
